package com.szl.group.template;

import java.util.function.Supplier;

/**
 * 业务层执行模板
 */
public interface ServiceExecuteTemplate {
    /**
     * 不开启事务执行业务方法
     * @param process
     * @param <T>
     * @return
     */
    <T> Result<T> doWithoutTransaction(Process<T> process);

    /**
     * 开启事务执行业务方法
     * @param process
     * @param <T>
     * @return
     */
    <T> Result<T> doInTransaction(Process<T> process);


    /**
     * 不开启事务执行业务方法 没有前置和后置
     * @param process
     * @param <T>
     * @return
     */
    <T> Result<T> doWithoutTransactionL(Supplier<T> process);



    /**
     * 开启事务执行业务方法  没有前置和后置
     * @param process
     * @param <T>
     * @return
     */
    <T> Result<T> doInTransactionL(Supplier<T> process);
}
